
Page({
  /**
   * 页面的初始数据
   * tabs:tab栏的栏目名
   * tabIndex：当前点击的tab的索引
   * itemWidth：每个tab项占的宽。在onload中计算得来
   * sliderLeft:初始时slidebar的偏移，为了和项目对齐（受限于字数,且需要调整条的宽度）
   * sliderOffset：点击/滑动tab时，应该产生的slider偏移，用于transform。取自于offsets数组
   * sliderOffsets：一个数组，记录了每个tab项对应的偏移量。在onload时初始化
   */


  

  data: {
    loading: false,
    color: '#000',
    background: '#DC2C1F',
    show: true,
    animated: false,
    tabs: ['个性推荐', '主播电台'],
    itemWidth: 0,
    windowWidth: 0,
    tabIndex: 0,
    sliderLeft: 0,
    sliderOffset: 0,
    sliderOffsets: [],
    // 自定义下拉刷新相关
    freshStatus: 'more', // 当前刷新的状态
    showRefresh: false,   // 是否显示下拉刷新组件
    showRefresh_today: false,
  },

  onLoad() {
    if (typeof this.getTabBar === 'function' &&
      this.getTabBar()) {
      this.getTabBar().setData({
        isShow_playing: false,
        isShow_index: true,
        isShow_me: false
      })
    };

    let that = this;
    // 计算
    wx.getSystemInfo({
      success: function (res) {
        // 每个item应占的宽度向上取整，限tab栏不会滑动的情况。
        let windowWidth = res.windowWidth;
        let itemWidth = Math.ceil(windowWidth / that.data.tabs.length);
        // 初始化每个项目的偏移量，存入数组
        let tempArr = [];
        for (let i in that.data.tabs) {
          tempArr.push(itemWidth * i);
        }

        // 32是两个字体（16px）的宽度。tab中字数不同的话需要调整...
        that.setData({
          sliderLeft: (res.windowWidth / that.data.tabs.length - 32) / 2,
          sliderOffsets: tempArr,
          sliderOffset: 0,
          itemWidth: itemWidth,
          windowWidth: windowWidth
        });
      }
    });
  },

  // 处理点击tab
  onTabClick(e) {
    let id = e.currentTarget.id;
    // 取新的偏移，完成transition和transform的参数
    let newOffset = this.data.sliderOffsets[id];
    this.setData({
      tabIndex: id,
      sliderOffset: newOffset
    })
  },

  // 处理swiper改变
  swiperChange(e) {
    this.setData({
      sliderOffset: this.data.sliderOffsets[e.detail.current],
      tabIndex: e.detail.current,
    })
  },

  //  处理手动滑动swiper-item.可以进一步对滚动条进行动画优化，但并不推荐。需要的话将注释放开即可
  swiperTran(e) {
    // console.log("滑动tab中...")
  },

  // 滑动动画完毕后执行的方法(不管滑动是否完成切换)
  animationfinish(e) {
    // console.log("动画执行完毕触发animationfinish")
  },

 

  // 触摸开始
  touchStart(e) {
    // console.log('触摸开始', this.data.tabIndex)
    this.setData({
      startY: e.changedTouches[0].pageY,
      freshStatus: 'more'
    })
  },
  // 触摸移动
  touchMove(e) {
    let endY = e.changedTouches[0].pageY;
    let startY = this.data.startY;
    let dis = endY - startY;
    // console.log('下拉的距离',dis)
    // 判断是否下拉
    if (dis <= 0) {
      return;
    }
    let offsetTop = e.currentTarget.offsetTop;
    if (dis > 150) {
      if (this.data.tabIndex == 0) {
        this.setData({
          showRefresh_today: true,
        }, () => {
          if (dis > 200) {
            this.setData({
              freshStatus: 'end'
            })
          } else {
            this.setData({
              freshStatus: 'more'
            })
          }
        })
      } else {
        this.setData({
          showRefresh: true,
        }, () => {
          if (dis > 200) {
            this.setData({
              freshStatus: 'end'
            })
          } else {
            this.setData({
              freshStatus: 'more'
            })
          }
        })
      }



    }
  },
  // 触摸结束
  touchEnd(e) {
    // console.log(this.data.freshStatus, this.data.showRefresh_today)

    if (this.data.freshStatus == 'end') {
      wx.showLoading({
        title: '刷新中',
      })

      setTimeout(()=>{
        wx.hideLoading()
      },1000)

      this.setData({
        freshStatus: 'fresh'
      })

      // 延迟 1000 毫秒，显示 “刷新中”，防止请求速度过快不显示
      setTimeout(() => {


        if (this.data.tabIndex == 0) {
          console.log('个性推荐touchEnd触发下拉刷新')
          // this.onPullDownRefresh_today();
          this.setData({
            showRefresh_today: false,
          })
        } else {
          console.log('主播电台touchEnd触发下拉刷新')
          //this.onPullDownRefresh(); // 获取最新列表数据
          this.setData({
            showRefresh: false,
          })
        }


      }, 1000);

    } else {
      // 没有完成指定的距离，隐藏。
      this.setData({
        showRefresh: false,
        showRefresh_today: false,
      })
    }
  },

  // 个性推荐tab 触底触发方法
  onReachBottom_today(){
    console.log('个性推荐tab 触底')
  },

  // 主播电台tab 触底触发方法 
  onReachBottom(){
    console.log('主播电台tab 触底')
  },

  // 点击顶部搜索栏跳转搜索页
  search: function () {
    wx.navigateTo({
      url: '/pages/search/index'
    })
  },
})

